package cn.b.sky.mes.pp.service;

import java.util.Date;
import java.util.List;
import java.util.Set;

import cn.b.sky.mes.pp.model.OperationTask;
import cn.b.sky.mes.pp.model.condition.OperationTaskCondition;

/**
 * <strong>Title : OperationTaskService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.pp.service<br></strong>
 * <strong>Description : </strong>生产工序单接口<br> 
 * <strong>Create on : 2016-8-2 下午1:49:58<br></strong>
 * <p>
 * @author JinQuan.Fu<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface OperationTaskService {

  /**
   * 
   * <strong>Title : getOperationTaskByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询工序单<br> 
   * <strong>Create on : 2016-8-2 下午1:51:52<br></strong>
   * <p>
   * @param condition 工序单条件类
   * @return
   * List<OperationTask>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<OperationTask> getOperationTaskByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : getOperationTaskCountByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询工序单总数<br> 
   * <strong>Create on : 2016-8-2 下午1:53:25<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getOperationTaskCountByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : getOperationTask<br></strong>
   * <strong>Description : </strong>根据工序单号查询工序任务单信息<br> 
   * <strong>Create on : 2016-8-3 下午3:28:46<br></strong>
   * <p>
   * @param operationTaskNum
   * @return
   * OperationTask
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  OperationTask getOperationTask(String siteCode, String operationTaskNum);

  /**
   * 
   * <strong>Title : releaseOperationTask<br></strong>
   * <strong>Description : </strong>工序任务单下达<br> 
   * <strong>Create on : 2016-8-4 上午10:04:09<br></strong>
   * <p>
   * @param siteCode
   * @param operationTaskNum
   * void
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String releaseOperationTask(String siteCode, String operationTaskNum);

  /**
   * 
   * <strong>Title : revocationOperationTask<br></strong>
   * <strong>Description : </strong>工序任务单撤销<br> 
   * <strong>Create on : 2016-8-4 下午1:30:14<br></strong>
   * <p>
   * @param siteCode
   * @param operationTaskNum
   * void
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String revocationOperationTask(String siteCode, String operationTaskNum);

  /**
   * 
   * <strong>Title : closeOperationTask<br></strong>
   * <strong>Description : </strong>工序任务单强制关闭<br> 
   * <strong>Create on : 2016-8-4 下午2:00:47<br></strong>
   * <p>
   * @param siteCode
   * @param operationTaskNum
   * @return
   * String
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String closeOperationTask(String siteCode, String operationTaskNum);

  /**
   * 
   * <strong>Title : getOperationTaskProgressByCondition<br></strong>
   * <strong>Description : </strong>工作任务单进度查询<br> 
   * <strong>Create on : 2016-8-8 下午4:21:14<br></strong>
   * <p>
   * @param condition
   * @return
   * List<OperationTask>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<OperationTask> getOperationTaskProgressByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : getOperationTaskProgressCountByCondition<br></strong>
   * <strong>Description : </strong>工作任务单进度查询总数<br> 
   * <strong>Create on : 2016-8-8 下午4:22:49<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getOperationTaskProgressCountByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : getOperationArrangePlanByCondition<br></strong>
   * <strong>Description : </strong>工序排产计划查询<br> 
   * <strong>Create on : 2016-8-10 上午9:25:41<br></strong>
   * <p>
   * @param condition
   * @return
   * List<OperationTask>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<OperationTask> getOperationArrangePlanByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : getOperationArrangePlanCountByCondition<br></strong>
   * <strong>Description : </strong>工序排产计划查询记录数<br> 
   * <strong>Create on : 2016-8-10 上午9:28:02<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getOperationArrangePlanCountByCondition(OperationTaskCondition condition);

  /**
   * 
   * <strong>Title : insertOperationTask<br></strong>
   * <strong>Description : </strong>新增工序任务单<br> 
   * <strong>Create on : 2016年8月16日 上午11:12:51<br></strong>
   * <p>
   * @param operationTask
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertOperationTask(OperationTask operationTask);

  /**
   * 
   * <strong>Title : updateOperationTask<br></strong>
   * <strong>Description : </strong>更新工序任务单<br> 
   * <strong>Create on : 2016年8月16日 上午11:13:13<br></strong>
   * <p>
   * @param operationTask
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateOperationTask(OperationTask operationTask);

  /**
   * 
   * <strong>Title : deleteOperationTask<br></strong>
   * <strong>Description : </strong>删除工序任务单<br> 
   * <strong>Create on : 2016年8月16日 上午11:13:26<br></strong>
   * <p>
   * @param siteCode
   * @param operationTaskNum
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteOperationTask(String siteCode, String operationTaskNum);

  /**
   * 
   * <strong>Title : saveOperationTasks<br></strong>
   * <strong>Description : </strong>批量保存工序任务单<br> 
   * <strong>Create on : 2016年8月16日 下午2:39:29<br></strong>
   * <p>
   * @param tasks
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void saveOperationTasks(List<OperationTask> tasks);

  /**
   * 
   * <strong>Title : getMinStartDateByOrderNums<br></strong>
   * <strong>Description : </strong>获取订单下的工序任务单的最小排产开始时间<br> 
   * <strong>Create on : 2016年8月19日 上午9:53:13<br></strong>
   * <p>
   * @param siteCode
   * @param orderNums
   * @return
   * Date
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Date getMinStartDateByOrderNums(String siteCode, String[] orderNums);

  /**
   * 
   * <strong>Title : getMaxEndDateByOrderNums<br></strong>
   * <strong>Description : </strong>获取订单下的工序任务单的最大排产结束时间<br> 
   * <strong>Create on : 2016年8月22日 下午1:41:06<br></strong>
   * <p>
   * @param siteCode
   * @param orderNums
   * @return
   * Date
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Date getMaxEndDateByOrderNums(String siteCode, String[] orderNums);

  /**
   * 
   * <strong>Title : getOperationTasksByControlNums<br></strong>
   * <strong>Description : </strong>根据生产管理号查询工序任务单<br> 
   * <strong>Create on : 2016年8月19日 上午9:36:28<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param controlNums 生产管理号
   * @return
   * List<OperationTask>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<OperationTask> getOperationTasksByControlNums(String siteCode, String[] controlNums);

  /**
   * 
   * <strong>Title : getControlNumsByWorkUnitCodes<br></strong>
   * <strong>Description : </strong>获取作业单元相关的历史排产管理号编号<订单号;管理号><br> 
   * <strong>Create on : 2016年11月15日 下午4:31:39<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCodeSet
   * @param startDate
   * @param endDate
   * @return
   * Set<String>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Set<String> getControlNumsByWorkUnitCodes(String siteCode, Set<String> workUnitCodeSet, String startDate,
      String endDate);

  /**
   * 
   * <strong>Title : updateOperationTaskStatus<br></strong>
   * <strong>Description : </strong>更新工序任务单状态<br> 
   * <strong>Create on : 2016年11月22日 上午9:32:41<br></strong>
   * <p>
   * @param siteCode
   * @param operationTaskNum
   * @param statusECode
   * @return
   * String
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateOperationTaskStatus(String siteCode, String operationTaskNum, String statusECode);
}
